编译环境
- 机型 MacBook Pro 2015款 8G+256G SSD
- 虚拟机 下安装操作系统 Ubuntu 14.04 LTS 64位(http://mirrors.163.com/ubuntu-releases/)
- Android 2.3.7 r1(https://pan.baidu.com/s/1gDr5lwgGzyZ533Bro7jkkA)
下载源代码
下载源代码
Android 2.3.7r1 源码,原本按照谷歌官方的指导,需要下载repo同步AOSP,但是遇到太多问题,并且.repo 文件相当大,下载耗时太久,而且很容易出现问题,而且所以直接下载别人打包好的7z格式高压缩比源码包。
为什么使用低版本的2.3.7
因为随着Android版本的不断更新,AOSP源代码越来越庞大,需要占据大量硬盘空间,同时对机器的性能提出了更高的要求,如果仅做学习研究的话,低版本的安卓就够了。
安装所需环境
安装JDK 1.6
1 | ./jdk-6u45-linux-x64.bin |
安装较低版本的gcc-4.4,g++-4.4
1 | sudo apt-get install gcc-4.4 |
安装所需的软件包
1 | sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip |
开始编译
执行命令
1 | make clobber |
等待约50分钟左右,编译完成,中间可能遇到不少错误,基本上都可以google到解决方案。
运行
如果编译顺利,执行
1 | emulator |
会启动一个模拟器,并将编译好的系统镜像 加载安装并运行到模拟器上。
遇到的错误及解决办法
Can't locate Switch.pm
原因:缺少相关库
解决:安装缺失的库1
sudo apt-get install libswitch-perl
make:out/host/linux-x86/obj/SHARED_LIBRARIES/libdvm_intermediates/native/dalvik_system_Zygote.o Error 1
原因:缺少头文件。
解决:添加头文件#include <sys/resource.h>
到以下文件dalvik/vm/native/dalvik_system_Zygote.c
1
sudo gedit dalvik/vm/native/dalvik_system_Zygote.c
make:[out/host/linux-x86/obj/STATIC_LIBRARIES/libext4_utils_intermediates/output_file.o] Error 1
原因:系统的文件换了位置。
解决: 此时需要将/usr/include/x86_64-linux-gnu/zconfig.h
拷贝到上级目录,此时编译才通过将zconfig.h
拷贝到/usr/include/
目录即可1
2cd /usr/include/x86_64-linux-gnu/
sudo cp zconfig.h ../out/target/common/obj/APPS/SignatureTest_intermediates/genres.stamp Killed
原因:给虚拟机设定的内存太小,仅1G。
解决:将内存增大到4G 后解决。SDL init failure, reason is: No available video device
原因:缺少SDL库支持。
解决方法:添加库。1
2
3sudo apt-add-repository "deb http://archive.canonical.com/ $(lsb_release -sc) partner"
sudo apt-get update
sudo apt-get install libsdl1.2debian:i386